package demo02;

import org.junit.Test;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;

/*
* 练习使用Executors获取ExecutorsService,然后使用方法，提交任务
* */
public class MyTest02 {
     @Test
     public void test01(){
         //1.使用工厂类获取线程池对象
         ExecutorService es= Executors.newFixedThreadPool(3);
         //2.提交任务
         for(int i=1;i<=10;i++){
             es.submit(new MyRunable(i));
         }
     }

    @Test
    public void test02(){

        //1.使用工厂类获取线程池对象
        ExecutorService es= Executors.newFixedThreadPool(3,new ThreadFactory() {
            int n=1;
            @Override
            public Thread newThread(Runnable r) {
                return new Thread(r,"自定义的线程名称"+n++);
            }
        });
        //2.提交任务
        for(int i=1;i<=10;i++){
            es.submit(new MyRunable(i));
        }
    }


}

/*
* 任务类,包含一个任务编号，在任务中打印出一个线程正在执行的任务编号
*
* */
class MyRunable02 implements Runnable{

    private int id;

    public MyRunable02(int id) {
        this.id = id;
    }

    @Override
    public void run() {
        //获取线程的名称,打印一句话
        String name=Thread.currentThread().getName();
        System.out.println(name+"执行了任务......."+this.id);
        /*try {
            Thread.sleep(200);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }*/
    }
}
